home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / paolib / cdp / cdp.h < prev    next >
Text File  |  1991-10-18  |  6KB  |  161 lines

  1. /* << High C V1.4 >> **********************************************************
  2. **
  3. **    CD簡易演奏ライブラリ用ヘッダ
  4. **
  5. **    1991.02.09 : CREATE
  6. **    1991.02.12 : FINISH
  7. **
  8. **    < HISTORY >
  9. **    1991.02.09 : CREATE
  10. **    1991.02.19 : SHUFFLE機能の追加.
  11. **
  12. **    < note > : TABS = 4
  13. **
  14. **    Programmed by Y.Hirata ( Nifty ID : NAB03321 )
  15. **
  16. ******************************************************************************/
  17.  
  18. #ifdef _CDP_LIB                            /*  ライブラリソース用                        */
  19.     #define    EX
  20. #else                                    /*  ライブラリ使用側                    */
  21.     #define    EX        extern
  22. #endif
  23.  
  24. #define    CDP_MAX_TRACK        99            /*  CD-ROM 最大トラック数:99            */
  25. #define    CDP_MIN_TRACK        1            /*  CD-ROM 最小トラック数:1                */
  26. #define    CDP_ZERO            0
  27. #define    CDP_TRUE            1            /*  真値                            */
  28. #define    CDP_FALSE            0            /*  偽値                            */
  29. #define    CDP_ERROR            -1            /*  エラー時のリターン値                    */
  30. #define    CDP_NOERROR            CDP_ZERO    /*  正常終了時のリターン値                */
  31. #define    CDP_RETRY            10            /*  エラー発生時のリトライ回数                */
  32. #define    CDP_MAX_REPEAT        255            /*  最大演奏リピート回数                */
  33. #define    CDP_MIN_REPEAT        1            /*  最小演奏リピート回数                */
  34. #define    CDP_FFREW_SEC        1            /*  先送り/後戻り時カウント値[秒]        */
  35.  
  36. /*
  37. **    乱数のマクロを使用する側で、stdio.h, stdlib.h, time.h を include して下さい!
  38. */
  39. #define    CDP_RANDINIT        srand((unsigned int)clock())    /*  乱数初期化    */
  40. #define    CDP_RANDOM(x)        (rand()%(x))                    /*  乱数 : 0~x    */
  41.  
  42.  
  43. /*    CDタイプ値の定義    */
  44.  
  45. #define    CDP_TYPE_NO            0            /*  なし                            */
  46. #define    CDP_TYPE_CDDA        1            /*  CD-DA                            */
  47. #define    CDP_TYPE_DATA        2            /*  DATA                            */
  48. #define    CDP_TYPE_BOTH        3            /*  CD-DA & DATA                    */
  49.  
  50.  
  51. /*    ステータス値の定義    */
  52.  
  53. #define    CDP_STAT_NOTREADY    -1            /*  NOT READY                        */
  54. #define    CDP_STAT_STOP        0            /*  停止中                            */
  55. #define    CDP_STAT_PLAY        1            /*  演奏中                            */
  56. #define    CDP_STAT_PAUSE        2            /*  一時停止中                        */
  57.  
  58.  
  59. /*    エラー値の定義        */
  60.  
  61. #define    CDP_ERR_NOERROR        CDP_ZERO    /*  正常                            */
  62. #define    CDP_ERR_NOTREADY    0x001        /*  CDがセットされていない                */
  63. #define    CDP_ERR_PARAMETER    0x002        /*  パラメタエラー                        */
  64. #define    CDP_ERR_NOTCONNECT    0x004        /*  ドライブが非接続                    */
  65. #define    CDP_ERR_ABNORMAL    0x008        /*  コマンドが異常終了                    */
  66. #define    CDP_ERR_MEDIA        0x010        /*  メディアエラー                        */
  67. #define    CDP_ERR_HARD        0x020        /*  ハードエラー                            */
  68. #define    CDP_ERR_PARITY        0x040        /*  パリティエラー                        */
  69. #define    CDP_ERR_CHANGE        0x080        /*  メディア交換あり                    */
  70. #define    CDP_ERR_DEVICENO    0x100        /*  指定デバイス番号誤り                */
  71. #define    CDP_ERR_SECTOR        0x101        /*  セクタ長が違う                        */
  72. #define    CDP_ERR_NOWPLAY        0x102        /*  音楽演奏中                        */
  73. #define    CDP_ERR_NOWPAUSE    0x104        /*  音楽が一時停止中                */
  74. #define    CDP_ERR_NOTPAUSE    0x108        /*  一時停止状態でない                */
  75. #define    CDP_ERR_NOMUSIC        0x110        /*  音楽データがない                    */
  76.  
  77.  
  78. /*-----------------------------------------------------------------------------
  79. **    データ構造定義
  80. -----------------------------------------------------------------------------*/
  81. typedef struct {                        /*  CD-ROM 曲情報用                    */
  82.         char    min ;                            /*  分   ( 1min = 60sec )    */
  83.         char    sec ;                            /*  秒   ( 1sec = 75frame )    */
  84.         char    frame ;                            /*  フレーム                    */
  85. } CDP_TRACK ;
  86.  
  87. typedef struct {                        /*  CD-ROM 情報                        */
  88.         int        drv ;                            /*  CDドライブ番号(0~6)        */
  89.         int        type ;                            /*  CDタイプ                    */
  90.         int        start ;                            /*  先頭トラック(曲)番号        */
  91.         int        end ;                            /*  最終トラック(曲)番号        */
  92.         CDP_TRACK    track[CDP_MAX_TRACK] ;        /*  各トラックの演奏開始時間    */
  93.         CDP_TRACK    discend ;                    /*  ディスク内演奏終了時間        */
  94. } CDP_INFO ;
  95.  
  96.  
  97. /*-----------------------------------------------------------------------------
  98. **    グローバルデータ
  99. -----------------------------------------------------------------------------*/
  100. EX CDP_INFO        CDP_INFO_buf ;                        /*  CD情報格納用        */
  101.  
  102. EX CDP_TRACK    CDP_CLOCK_nowdisc ;        /*  演奏中のディスク内演奏時間            */
  103. EX CDP_TRACK    CDP_TIME_nowdisc ;        /*  演奏中のディスク内残り演奏時間        */
  104. EX CDP_TRACK    CDP_CLOCK_nowtrack ;    /*  演奏中のトラック内演奏時間            */
  105. EX CDP_TRACK    CDP_TIME_nowtrack ;        /*  演奏中のトラック内残り演奏時間        */
  106. EX CDP_TRACK    CDP_TIME_track[CDP_MAX_TRACK] ;        /*  各トラックの演奏時間    */
  107. EX CDP_TRACK    CDP_TIME_music ;                    /*  全トラックの演奏時間    */
  108. EX CDP_TRACK    CDP_TIME_data ;                        /*  全データ時間            */
  109. EX CDP_TRACK    CDP_CLOCK_start ;                    /*  演奏開始指定時間    */
  110. EX CDP_TRACK    CDP_CLOCK_end ;                        /*  演奏終了指定時間    */
  111. EX CDP_TRACK    CDP_CLOCK_pause ;        /*  一時停止時のトラック内演奏時間        */
  112. EX CDP_TRACK    CDP_CLOCK_pausedisc ;    /*  一時停止時のディスク内演奏時間        */
  113.  
  114. EX int        CDP_REP_cnt ;                /*  リピート回数(演奏回数)                */
  115. EX int        CDP_NOW_status ;            /*  現在のCD演奏状態                */
  116. EX int        CDP_NOW_musicno ;            /*  現在演奏中の曲番号                */
  117. EX int        CDP_NOW_start ;                /*  演奏開始曲番号                    */
  118. EX int        CDP_NOW_end ;                /*  演奏終了曲番号                    */
  119. EX int        CDP_NOW_pause ;                /*  一時停止時の曲番号                */
  120. EX char        CDP_FLG_pauseplay ;        /*  演奏開始指定時間にPAUSE解除するか?    */
  121. EX char        CDP_FLG_shuffleinit ;    /*  シャッフル情報を初期化するのか?            */
  122.  
  123. /*-----------------------------------------------------------------------------
  124. **    関数プロトタイプ宣言
  125. -----------------------------------------------------------------------------*/
  126. /*
  127. **    CDP.C
  128. */
  129. void CDP_init( void ) ;
  130. int CDP_tocread( void ) ;
  131. int CDP_status( void ) ;
  132. int CDP_timeplay( void ) ;
  133. int CDP_play( void ) ;
  134. int CDP_pause( void ) ;
  135. void CDP_stop( void ) ;
  136. int CDP_shuffle( void ) ;
  137. int CDP_shuffletime( void ) ;
  138.  
  139. /*
  140. **    CDPTIME.C
  141. */
  142. int    CDP_cmptime( signed char, signed char, signed char,
  143.             signed char, signed char, signed char ) ;
  144. void CDP_subtime( char, char, char,
  145.             char, char, char,
  146.             char *, char *, char * ) ;
  147. void CDP_addtime( char, char, char,
  148.             char, char, char,
  149.             char *, char *, char * ) ;
  150. void CDP_set_time_start( int ) ;
  151. void CDP_set_time_end( int ) ;
  152. void CDP_timecalc( void ) ;
  153. void CDP_remaintime( void ) ;
  154. int CDP_data_check( int ) ;
  155. int CDP_fftime( void ) ;
  156. int CDP_rewtime( void ) ;
  157. int CDP_ffmusic( void ) ;
  158. int CDP_rewmusic( void ) ;
  159. void CDP_debug_dispmsg( int ) ;
  160.  
  161.